package top.xia17.plugins.fast.common.database;

import java.util.List;

/**
 * 该接口定义了一些CRUD的扩展方法， 用户可以根据自己的需求重写下列方法
 *
 * @author xia17
 * @since 2021/7/14 13:33
 */
public interface CrudServiceExpand<T> {

    /**
     * 新增实体前调用
     * @param entity 实体
     */
    default void createBefore(T entity) {
    }

    /**
     * 新增实体后调用
     * @param entity 实体
     */
    default void createAfter(T entity){}

    /**
     * 从resource更新属性到entity中
     * @param entity 实体
     * @param resource 资源
     */
    default void updateProperty(T entity , T resource){}

    /**
     * 更新之前调用
     * @param entity 实体
     * @param resource 资源
     */
    default void updateBefore(T entity, T resource) {
    }

    /**
     * 更新之后调用
     *
     * @param entity 实体
     */
    default void updateAfter(T entity) {
    }

    /**
     * 删除之前调用
     *
     * @param entity 实体
     */
    default void deleteBefore(T entity) {
    }

    /**
     * 删除之后调用
     *
     * @param entity 实体
     */
    default void deleteAfter(T entity) {
    }


    /**
     * 删除之前调用
     *
     * @param entities 实体
     */
    default void deleteBefore(List<T> entities) {
    }

    /**
     * 删除之后调用
     *
     * @param entities 实体
     */
    default void deleteAfter(List<T> entities) {
    }

}
